package com.luoguijia.disk.files.service;

import com.luoguijia.disk.files.exception.FileOperationException;
import com.luoguijia.disk.files.repository.FileDao;
import com.luoguijia.disk.mybatis.flexigrid.TblResponseEntity;
import org.springframework.http.ResponseEntity;

import java.io.InputStream;

public interface FileIoService {
    /**
     * 文件类型：文件
     */
    Integer FILE_TYPE_FILE = 0;
    /**
     * 文件类型：文件夹
     */
    Integer FILE_TYPE_FOLDER = 1;

    /**
     * 文件分隔符
     */
    String FILE_SEPARATOR = "/";

    /**
     * 文件同步
     */
    void syncFileData();


    /**
     * 重命名文件或文件夹
     * @param renameDTO 重命名请求参数
     * @param userId 操作用户ID
     * @return 操作结果
     * @throws FileOperationException 文件操作异常
     */
    TblResponseEntity<String> renameFile(FileDao renameDTO, String userId) throws FileOperationException;


    /**
     * 创建文件夹
     * @param parentId
     * @param folderName
     */
    void mkdirFileInfo(String parentId,String folderName);

    /**
     * 文件下载
     * @param fileUuid
     * @return
     */
    ResponseEntity<byte[]> downFile(String fileUuid);


    /**
     * 复制文件
     * @param parentId
     * @param srcUuidList
     */
    void copyFile(String parentId, String srcUuidList);

    void uploadFile(String parentId, String fileName, InputStream inputStream);

    /**
     * 获取文件分享地址
     * @param fileUuid
     * @return
     */
    String getShareUrl(String fileUuid);

    /**
     * 查询分享地址
     * @param fileUuid
     * @param fileValidity
     * @return
     */
    String queryShareUrl(String fileUuid, Integer fileValidity);

    /**
     * 获取文件预览URL
     * @param fileUuid 文件UUID
     * @return 预览URL
     */
    String getPreviewUrl(String fileUuid);
}



